library(neonUtilities)
library(plyr)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.7 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::arrange() masks plyr::arrange()
## ✖ purrr::compact() masks plyr::compact()
## ✖ dplyr::count() masks plyr::count()
## ✖ dplyr::failwith() masks plyr::failwith()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::id() masks plyr::id()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::mutate() masks plyr::mutate()
## ✖ dplyr::rename() masks plyr::rename()
## ✖ dplyr::summarise() masks plyr::summarise()
## ✖ dplyr::summarize() masks plyr::summarize()
library(xtable)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following objects are masked from 'package:plyr':
##
## arrange, mutate, rename, summarise
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggrepel)
zipsByProduct(dpID='DP1.10086.001', check.size=FALSE, package = 'expanded', site = 'all')
stackByTable(filepath="/home/jlb/jlb@umass.edu/GoEcology/myGitHub/lterwg-emergent/code/filesToStack10086")
soil_fieldBgc_down <- readTableNEON(
dataFile='filesToStack10086/stackedFiles/sls_bgcSubsampling.csv',
varFile='filesToStack10086/stackedFiles/variables_10086.csv')
soil_fieldBgc_down <- select(soil_fieldBgc_down, sampleID, cnSampleID,
bgcArchiveID,bgcSampleCondition=sampleCondition, bgcDataQF)
soil_fieldCore_down <- readTableNEON(
dataFile='filesToStack10086/stackedFiles/sls_soilCoreCollection.csv',
varFile='filesToStack10086/stackedFiles/variables_10086.csv')
soil_fieldMoist_down <- readTableNEON(
dataFile='filesToStack10086/stackedFiles/sls_soilMoisture.csv',
varFile='filesToStack10086/stackedFiles/variables_10086.csv')
soil_fieldPh_down <- readTableNEON(
dataFile='filesToStack10086/stackedFiles/sls_soilpH.csv',
varFile='filesToStack10086/stackedFiles/variables_10086.csv')
# join soil field tables: core collection, moisture, pH, bgc sub-sampling
soilField_down <- left_join(soil_fieldCore_down, soil_fieldMoist_down,
by=c('sampleID', 'domainID', 'siteID', 'namedLocation', 'plotID', 'collectDate', 'horizon', 'sampleCode') ) %>%
select(-uid.x, -uid.y, -samplingProtocolVersion.y)
soilField_down <- left_join(soilField_down, soil_fieldPh_down, by=c('sampleID', 'sampleCode', 'domainID', 'siteID',
'plotID', 'namedLocation', 'collectDate')) %>%
select(-uid, -boatMass, -freshMassBoatMass, -dryMassBoatMass, -pHSoilInWaterMass, -pHWaterVol,
-pHSoilInCaClMass, -pHCaClVol, -pHSampleID)
soilField_down <- left_join(soilField_down, soil_fieldBgc_down, by=c('sampleID') )
# read soil chem and isotope data #
soil_chem_down <- readTableNEON(
dataFile='filesToStack10086/stackedFiles/sls_soilChemistry.csv',
varFile='filesToStack10086/stackedFiles/variables_10086.csv') %>%
select(sampleID, cnSampleID, sampleType,acidTreatment, nitrogenPercent, organicCPercent,
CNratio, cnPercentQF, percentAccuracyQF, analyticalRepNumber, cnRemarks=remarks,
cnLaboratoryName=laboratoryName, cnTestMethod=testMethod, cnInstrument=instrument,
cnDataQF=dataQF)
# join soil chem and field data tables
soilFieldChem_down <- left_join(soilField_down, soil_chem_down, by=c('sampleID', 'cnSampleID') )
#### moisture ####
hasMoisture <- !is.na(soilField_down$soilMoisture)
moistureSummary <- data.frame(soilField_down[hasMoisture, ] %>% group_by(siteID) %>%
summarise(meansoilMoisture=mean(soilMoisture)) )
dat <- xtable(moistureSummary)
print(dat, type = "html")
## <!-- html table generated in R 4.1.2 by xtable 1.8-4 package -->
## <!-- Fri May 20 18:10:20 2022 -->
## <table border=1>
## <tr> <th> </th> <th> siteID </th> <th> meansoilMoisture </th> </tr>
## <tr> <td align="right"> 1 </td> <td> ABBY </td> <td align="right"> 0.80 </td> </tr>
## <tr> <td align="right"> 2 </td> <td> BARR </td> <td align="right"> 4.91 </td> </tr>
## <tr> <td align="right"> 3 </td> <td> BART </td> <td align="right"> 2.09 </td> </tr>
## <tr> <td align="right"> 4 </td> <td> BLAN </td> <td align="right"> 0.20 </td> </tr>
## <tr> <td align="right"> 5 </td> <td> BONA </td> <td align="right"> 1.70 </td> </tr>
## <tr> <td align="right"> 6 </td> <td> CLBJ </td> <td align="right"> 0.18 </td> </tr>
## <tr> <td align="right"> 7 </td> <td> CPER </td> <td align="right"> 0.07 </td> </tr>
## <tr> <td align="right"> 8 </td> <td> DCFS </td> <td align="right"> 0.33 </td> </tr>
## <tr> <td align="right"> 9 </td> <td> DEJU </td> <td align="right"> 0.92 </td> </tr>
## <tr> <td align="right"> 10 </td> <td> DELA </td> <td align="right"> 0.34 </td> </tr>
## <tr> <td align="right"> 11 </td> <td> DSNY </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 12 </td> <td> GRSM </td> <td align="right"> 1.08 </td> </tr>
## <tr> <td align="right"> 13 </td> <td> GUAN </td> <td align="right"> 0.33 </td> </tr>
## <tr> <td align="right"> 14 </td> <td> HARV </td> <td align="right"> 1.58 </td> </tr>
## <tr> <td align="right"> 15 </td> <td> HEAL </td> <td align="right"> 3.79 </td> </tr>
## <tr> <td align="right"> 16 </td> <td> JERC </td> <td align="right"> 0.08 </td> </tr>
## <tr> <td align="right"> 17 </td> <td> JORN </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 18 </td> <td> KONA </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 19 </td> <td> KONZ </td> <td align="right"> 0.31 </td> </tr>
## <tr> <td align="right"> 20 </td> <td> LAJA </td> <td align="right"> 0.28 </td> </tr>
## <tr> <td align="right"> 21 </td> <td> LENO </td> <td align="right"> 0.36 </td> </tr>
## <tr> <td align="right"> 22 </td> <td> MLBS </td> <td align="right"> 0.89 </td> </tr>
## <tr> <td align="right"> 23 </td> <td> MOAB </td> <td align="right"> 0.05 </td> </tr>
## <tr> <td align="right"> 24 </td> <td> NIWO </td> <td align="right"> 0.37 </td> </tr>
## <tr> <td align="right"> 25 </td> <td> NOGP </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 26 </td> <td> OAES </td> <td align="right"> 0.16 </td> </tr>
## <tr> <td align="right"> 27 </td> <td> ONAQ </td> <td align="right"> 0.12 </td> </tr>
## <tr> <td align="right"> 28 </td> <td> ORNL </td> <td align="right"> 0.35 </td> </tr>
## <tr> <td align="right"> 29 </td> <td> OSBS </td> <td align="right"> 0.38 </td> </tr>
## <tr> <td align="right"> 30 </td> <td> PUUM </td> <td align="right"> 3.97 </td> </tr>
## <tr> <td align="right"> 31 </td> <td> RMNP </td> <td align="right"> 0.43 </td> </tr>
## <tr> <td align="right"> 32 </td> <td> SCBI </td> <td align="right"> 0.33 </td> </tr>
## <tr> <td align="right"> 33 </td> <td> SERC </td> <td align="right"> 0.28 </td> </tr>
## <tr> <td align="right"> 34 </td> <td> SJER </td> <td align="right"> 0.06 </td> </tr>
## <tr> <td align="right"> 35 </td> <td> SOAP </td> <td align="right"> 0.20 </td> </tr>
## <tr> <td align="right"> 36 </td> <td> SRER </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 37 </td> <td> STEI </td> <td align="right"> 1.02 </td> </tr>
## <tr> <td align="right"> 38 </td> <td> STER </td> <td align="right"> 0.16 </td> </tr>
## <tr> <td align="right"> 39 </td> <td> TALL </td> <td align="right"> 0.21 </td> </tr>
## <tr> <td align="right"> 40 </td> <td> TEAK </td> <td align="right"> 0.15 </td> </tr>
## <tr> <td align="right"> 41 </td> <td> TOOL </td> <td align="right"> 4.33 </td> </tr>
## <tr> <td align="right"> 42 </td> <td> TREE </td> <td align="right"> 1.30 </td> </tr>
## <tr> <td align="right"> 43 </td> <td> UKFS </td> <td align="right"> 0.34 </td> </tr>
## <tr> <td align="right"> 44 </td> <td> UNDE </td> <td align="right"> 2.98 </td> </tr>
## <tr> <td align="right"> 45 </td> <td> WOOD </td> <td align="right"> 0.42 </td> </tr>
## <tr> <td align="right"> 46 </td> <td> WREF </td> <td align="right"> 0.81 </td> </tr>
## <tr> <td align="right"> 47 </td> <td> YELL </td> <td align="right"> 0.12 </td> </tr>
## </table>
#### temp ####
hasTemp <- !is.na(soilField_down$soilTemp)
tempSummary <- data.frame(soilField_down[hasTemp, ] %>% group_by(siteID) %>%
summarise(meansoilTemp=mean(soilTemp)) )
dat <- xtable(moistureSummary)
print(dat, type = "html")
## <!-- html table generated in R 4.1.2 by xtable 1.8-4 package -->
## <!-- Fri May 20 18:10:20 2022 -->
## <table border=1>
## <tr> <th> </th> <th> siteID </th> <th> meansoilMoisture </th> </tr>
## <tr> <td align="right"> 1 </td> <td> ABBY </td> <td align="right"> 0.80 </td> </tr>
## <tr> <td align="right"> 2 </td> <td> BARR </td> <td align="right"> 4.91 </td> </tr>
## <tr> <td align="right"> 3 </td> <td> BART </td> <td align="right"> 2.09 </td> </tr>
## <tr> <td align="right"> 4 </td> <td> BLAN </td> <td align="right"> 0.20 </td> </tr>
## <tr> <td align="right"> 5 </td> <td> BONA </td> <td align="right"> 1.70 </td> </tr>
## <tr> <td align="right"> 6 </td> <td> CLBJ </td> <td align="right"> 0.18 </td> </tr>
## <tr> <td align="right"> 7 </td> <td> CPER </td> <td align="right"> 0.07 </td> </tr>
## <tr> <td align="right"> 8 </td> <td> DCFS </td> <td align="right"> 0.33 </td> </tr>
## <tr> <td align="right"> 9 </td> <td> DEJU </td> <td align="right"> 0.92 </td> </tr>
## <tr> <td align="right"> 10 </td> <td> DELA </td> <td align="right"> 0.34 </td> </tr>
## <tr> <td align="right"> 11 </td> <td> DSNY </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 12 </td> <td> GRSM </td> <td align="right"> 1.08 </td> </tr>
## <tr> <td align="right"> 13 </td> <td> GUAN </td> <td align="right"> 0.33 </td> </tr>
## <tr> <td align="right"> 14 </td> <td> HARV </td> <td align="right"> 1.58 </td> </tr>
## <tr> <td align="right"> 15 </td> <td> HEAL </td> <td align="right"> 3.79 </td> </tr>
## <tr> <td align="right"> 16 </td> <td> JERC </td> <td align="right"> 0.08 </td> </tr>
## <tr> <td align="right"> 17 </td> <td> JORN </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 18 </td> <td> KONA </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 19 </td> <td> KONZ </td> <td align="right"> 0.31 </td> </tr>
## <tr> <td align="right"> 20 </td> <td> LAJA </td> <td align="right"> 0.28 </td> </tr>
## <tr> <td align="right"> 21 </td> <td> LENO </td> <td align="right"> 0.36 </td> </tr>
## <tr> <td align="right"> 22 </td> <td> MLBS </td> <td align="right"> 0.89 </td> </tr>
## <tr> <td align="right"> 23 </td> <td> MOAB </td> <td align="right"> 0.05 </td> </tr>
## <tr> <td align="right"> 24 </td> <td> NIWO </td> <td align="right"> 0.37 </td> </tr>
## <tr> <td align="right"> 25 </td> <td> NOGP </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 26 </td> <td> OAES </td> <td align="right"> 0.16 </td> </tr>
## <tr> <td align="right"> 27 </td> <td> ONAQ </td> <td align="right"> 0.12 </td> </tr>
## <tr> <td align="right"> 28 </td> <td> ORNL </td> <td align="right"> 0.35 </td> </tr>
## <tr> <td align="right"> 29 </td> <td> OSBS </td> <td align="right"> 0.38 </td> </tr>
## <tr> <td align="right"> 30 </td> <td> PUUM </td> <td align="right"> 3.97 </td> </tr>
## <tr> <td align="right"> 31 </td> <td> RMNP </td> <td align="right"> 0.43 </td> </tr>
## <tr> <td align="right"> 32 </td> <td> SCBI </td> <td align="right"> 0.33 </td> </tr>
## <tr> <td align="right"> 33 </td> <td> SERC </td> <td align="right"> 0.28 </td> </tr>
## <tr> <td align="right"> 34 </td> <td> SJER </td> <td align="right"> 0.06 </td> </tr>
## <tr> <td align="right"> 35 </td> <td> SOAP </td> <td align="right"> 0.20 </td> </tr>
## <tr> <td align="right"> 36 </td> <td> SRER </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 37 </td> <td> STEI </td> <td align="right"> 1.02 </td> </tr>
## <tr> <td align="right"> 38 </td> <td> STER </td> <td align="right"> 0.16 </td> </tr>
## <tr> <td align="right"> 39 </td> <td> TALL </td> <td align="right"> 0.21 </td> </tr>
## <tr> <td align="right"> 40 </td> <td> TEAK </td> <td align="right"> 0.15 </td> </tr>
## <tr> <td align="right"> 41 </td> <td> TOOL </td> <td align="right"> 4.33 </td> </tr>
## <tr> <td align="right"> 42 </td> <td> TREE </td> <td align="right"> 1.30 </td> </tr>
## <tr> <td align="right"> 43 </td> <td> UKFS </td> <td align="right"> 0.34 </td> </tr>
## <tr> <td align="right"> 44 </td> <td> UNDE </td> <td align="right"> 2.98 </td> </tr>
## <tr> <td align="right"> 45 </td> <td> WOOD </td> <td align="right"> 0.42 </td> </tr>
## <tr> <td align="right"> 46 </td> <td> WREF </td> <td align="right"> 0.81 </td> </tr>
## <tr> <td align="right"> 47 </td> <td> YELL </td> <td align="right"> 0.12 </td> </tr>
## </table>
#### pH ####
haspH <- !is.na(soilField_down$soilInCaClpH)
pHSummary <- data.frame(soilField_down[haspH, ] %>% group_by(siteID) %>%
summarise(meansoilpH=mean(soilInCaClpH)) )
dat <- xtable(pHSummary)
print(dat, type = "html")
## <!-- html table generated in R 4.1.2 by xtable 1.8-4 package -->
## <!-- Fri May 20 18:10:20 2022 -->
## <table border=1>
## <tr> <th> </th> <th> siteID </th> <th> meansoilpH </th> </tr>
## <tr> <td align="right"> 1 </td> <td> ABBY </td> <td align="right"> 4.33 </td> </tr>
## <tr> <td align="right"> 2 </td> <td> BARR </td> <td align="right"> 4.69 </td> </tr>
## <tr> <td align="right"> 3 </td> <td> BART </td> <td align="right"> 3.32 </td> </tr>
## <tr> <td align="right"> 4 </td> <td> BLAN </td> <td align="right"> 5.30 </td> </tr>
## <tr> <td align="right"> 5 </td> <td> BONA </td> <td align="right"> 4.03 </td> </tr>
## <tr> <td align="right"> 6 </td> <td> CLBJ </td> <td align="right"> 5.71 </td> </tr>
## <tr> <td align="right"> 7 </td> <td> CPER </td> <td align="right"> 6.33 </td> </tr>
## <tr> <td align="right"> 8 </td> <td> DCFS </td> <td align="right"> 6.47 </td> </tr>
## <tr> <td align="right"> 9 </td> <td> DEJU </td> <td align="right"> 4.29 </td> </tr>
## <tr> <td align="right"> 10 </td> <td> DELA </td> <td align="right"> 5.28 </td> </tr>
## <tr> <td align="right"> 11 </td> <td> DSNY </td> <td align="right"> 3.54 </td> </tr>
## <tr> <td align="right"> 12 </td> <td> GRSM </td> <td align="right"> 3.86 </td> </tr>
## <tr> <td align="right"> 13 </td> <td> GUAN </td> <td align="right"> 7.26 </td> </tr>
## <tr> <td align="right"> 14 </td> <td> HARV </td> <td align="right"> 3.40 </td> </tr>
## <tr> <td align="right"> 15 </td> <td> HEAL </td> <td align="right"> 4.37 </td> </tr>
## <tr> <td align="right"> 16 </td> <td> JERC </td> <td align="right"> 4.94 </td> </tr>
## <tr> <td align="right"> 17 </td> <td> JORN </td> <td align="right"> 7.33 </td> </tr>
## <tr> <td align="right"> 18 </td> <td> KONA </td> <td align="right"> 5.42 </td> </tr>
## <tr> <td align="right"> 19 </td> <td> KONZ </td> <td align="right"> 6.63 </td> </tr>
## <tr> <td align="right"> 20 </td> <td> LAJA </td> <td align="right"> 6.28 </td> </tr>
## <tr> <td align="right"> 21 </td> <td> LENO </td> <td align="right"> 4.64 </td> </tr>
## <tr> <td align="right"> 22 </td> <td> MLBS </td> <td align="right"> 3.50 </td> </tr>
## <tr> <td align="right"> 23 </td> <td> MOAB </td> <td align="right"> 7.62 </td> </tr>
## <tr> <td align="right"> 24 </td> <td> NIWO </td> <td align="right"> 4.44 </td> </tr>
## <tr> <td align="right"> 25 </td> <td> NOGP </td> <td align="right"> 6.19 </td> </tr>
## <tr> <td align="right"> 26 </td> <td> OAES </td> <td align="right"> 7.35 </td> </tr>
## <tr> <td align="right"> 27 </td> <td> ONAQ </td> <td align="right"> 7.64 </td> </tr>
## <tr> <td align="right"> 28 </td> <td> ORNL </td> <td align="right"> 4.45 </td> </tr>
## <tr> <td align="right"> 29 </td> <td> OSBS </td> <td align="right"> 4.00 </td> </tr>
## <tr> <td align="right"> 30 </td> <td> PUUM </td> <td align="right"> 4.04 </td> </tr>
## <tr> <td align="right"> 31 </td> <td> RMNP </td> <td align="right"> 4.92 </td> </tr>
## <tr> <td align="right"> 32 </td> <td> SCBI </td> <td align="right"> 5.47 </td> </tr>
## <tr> <td align="right"> 33 </td> <td> SERC </td> <td align="right"> 4.44 </td> </tr>
## <tr> <td align="right"> 34 </td> <td> SJER </td> <td align="right"> 5.49 </td> </tr>
## <tr> <td align="right"> 35 </td> <td> SOAP </td> <td align="right"> 5.28 </td> </tr>
## <tr> <td align="right"> 36 </td> <td> SRER </td> <td align="right"> 6.67 </td> </tr>
## <tr> <td align="right"> 37 </td> <td> STEI </td> <td align="right"> 4.46 </td> </tr>
## <tr> <td align="right"> 38 </td> <td> STER </td> <td align="right"> 6.42 </td> </tr>
## <tr> <td align="right"> 39 </td> <td> TALL </td> <td align="right"> 4.27 </td> </tr>
## <tr> <td align="right"> 40 </td> <td> TEAK </td> <td align="right"> 4.71 </td> </tr>
## <tr> <td align="right"> 41 </td> <td> TOOL </td> <td align="right"> 4.69 </td> </tr>
## <tr> <td align="right"> 42 </td> <td> TREE </td> <td align="right"> 4.32 </td> </tr>
## <tr> <td align="right"> 43 </td> <td> UKFS </td> <td align="right"> 6.18 </td> </tr>
## <tr> <td align="right"> 44 </td> <td> UNDE </td> <td align="right"> 4.17 </td> </tr>
## <tr> <td align="right"> 45 </td> <td> WOOD </td> <td align="right"> 7.00 </td> </tr>
## <tr> <td align="right"> 46 </td> <td> WREF </td> <td align="right"> 3.94 </td> </tr>
## <tr> <td align="right"> 47 </td> <td> YELL </td> <td align="right"> 5.56 </td> </tr>
## </table>
*****JEFFS NEW SECTIONS*****
forest %>%
filter(nlcdClass == "evergreenForest") %>%
ggplot(aes(x=siteID, y=soilTemp, fill = nlcdClass)) +
geom_boxplot() +
ylim(c(-20, 50)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Evergreen Forested Plots')
## Warning: Removed 641 rows containing non-finite values (stat_boxplot).
forest %>%
filter(nlcdClass == "evergreenForest") %>%
ggplot(aes(x=siteID, y=soilMoisture, fill = nlcdClass)) +
geom_boxplot() +
ylim(c(-1, 10)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Evergreen Forested Plots')
## Warning: Removed 867 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
group_by(siteID, nlcdClass) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
## `summarise()` has grouped output by 'siteID'. You can override using the
## `.groups` argument.
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, color = nlcdClass)) +
geom_point() +
xlim(c(0, 4)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Forested Plots')
ggplotly(g1)
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, color = siteID, label = siteID)) +
geom_point() + geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
xlim(c(0, 4)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Forested Plots')
g1
forest_sub_down <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, color = siteID, label = siteID)) +
geom_point() + geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
xlim(c(0, 4)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Forested Plots')
g1
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM")) %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, label = siteID)) +
geom_point() +
geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
xlim(c(0, 1.5)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Decidious Forested Plots')
g1
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM")) %>%
filter(nlcdClass == "evergreenForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, label = siteID)) +
geom_point(color = "darkgreen") +
geom_label_repel(aes(label = siteID),
box.padding = 0.35,
point.padding = 0.5,
segment.color = 'grey50') +
xlim(c(0, 1)) +
ylim(c(0, 30)) +
xlab("Mean Soil Moisture (%) ") +
ylab("Mean Soil Temperature (°C)")
# ggtitle('Soil Moisture x Temperatue Evergreen Forested Plots')
g1
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_label_repel).
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness")
g1 <- ggplot(forest_sub, aes(x=reorder(siteID, soilTemp, mean), y=soilTemp)) +
geom_boxplot() +
ylim(c(-1, 35)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Forest Soil Temperature Plots')
g1
## Warning: Removed 87 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness")
g1 <- ggplot(forest_sub, aes(x=siteID, y=soilMoisture)) +
geom_boxplot() +
ylim(c(-1, 5)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Forest Soil Moisture Plots')
g1
## Warning: Removed 375 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
filter(nlcdClass == "evergreenForest") %>%
filter(sampleTiming == "peakGreenness")
g1 <- ggplot(forest_sub, aes(x=siteID, y=soilMoisture)) +
geom_boxplot() +
ylim(c(-1, 5)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Forest Soil Moisture Plots')
g1
## Warning: Removed 273 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM", "ONAQ", "YELL")) %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID, nlcdClass) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
## `summarise()` has grouped output by 'siteID'. You can override using the
## `.groups` argument.
g1 <- ggplot(forest_sub, aes(x=mean_soilTemp, y=mean_soilMoisture, color = nlcdClass, label = siteID)) +
geom_point() +
# geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
geom_label_repel(aes(label = siteID),
box.padding = 0.35,
point.padding = 0.5,
segment.color = 'grey50') +
xlim(0, 30) +
ylab("Mean Soil Moisture (%) ") +
xlab("Mean Soil Temperature (°C)") +
facet_wrap(~nlcdClass, ncol = 1)
# ggtitle('Soil Moisture x Temperatue Evergreen Forested Plots')
g1
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM", "ONAQ", "YELL")) %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID, nlcdClass) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
## `summarise()` has grouped output by 'siteID'. You can override using the
## `.groups` argument.
g1 <- ggplot(forest_sub, aes(x=mean_soilTemp, y=mean_soilMoisture, color = nlcdClass, label = siteID)) +
geom_point() +
# geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
geom_label_repel(aes(label = siteID),
box.padding = 0.35,
point.padding = 0.5,
segment.color = 'grey50') +
xlim(0, 30) +
ylab("Mean Soil Moisture (%) ") +
xlab("Mean Soil Temperature (°C)") +
facet_wrap(~nlcdClass)
# ggtitle('Soil Moisture x Temperatue Evergreen Forested Plots')
g1
## Warning: ggrepel: 3 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps